##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Warning: package 'ggplot2' was built under R version 3.4.4
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag(): dplyr, stats
## Warning: package 'here' was built under R version 3.4.4
## here() starts at C:/Users/Thierry/EDA/vis-cancoes
## Warning: package 'plotly' was built under R version 3.4.4
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
Existem muitas características que podem ser análisadas em uma música, dessa vez, decidi algumas delas utlizando como base dados do tropicalsitas, luiz gonzada e jackson, grandes vozes da música brasileira.
tropicalistas = read_csv(here("data/tropicalistas.csv"))
## Parsed with column specification:
## cols(
## .default = col_character(),
## album_release_year = col_date(format = ""),
## album_popularity = col_integer(),
## danceability = col_double(),
## energy = col_double(),
## loudness = col_double(),
## speechiness = col_double(),
## acousticness = col_double(),
## instrumentalness = col_double(),
## liveness = col_double(),
## valence = col_double(),
## tempo = col_double(),
## duration_ms = col_double(),
## time_signature = col_integer(),
## track_popularity = col_integer()
## )
## See spec(...) for full column specifications.
luiz = read_csv(here("data/luiz_gonzaga.csv"))
## Parsed with column specification:
## cols(
## .default = col_double(),
## album_uri = col_character(),
## album_name = col_character(),
## album_img = col_character(),
## album_release_date = col_character(),
## album_release_year = col_date(format = ""),
## album_popularity = col_integer(),
## track_name = col_character(),
## track_uri = col_character(),
## key = col_character(),
## mode = col_character(),
## time_signature = col_integer(),
## key_mode = col_character(),
## track_popularity = col_integer()
## )
## See spec(...) for full column specifications.
jackson = read_csv(here("data/jackson.csv"))
## Parsed with column specification:
## cols(
## .default = col_double(),
## album_uri = col_character(),
## album_name = col_character(),
## album_img = col_character(),
## album_release_date = col_character(),
## album_release_year = col_date(format = ""),
## album_popularity = col_integer(),
## track_name = col_character(),
## track_uri = col_character(),
## key = col_character(),
## mode = col_character(),
## time_signature = col_integer(),
## key_mode = col_character(),
## track_popularity = col_integer()
## )
## See spec(...) for full column specifications.
trop_jovem <- full_join(tropicalistas, luiz)
## Joining, by = c("album_uri", "album_name", "album_img", "album_release_date", "album_release_year", "album_popularity", "track_name", "track_uri", "danceability", "energy", "key", "loudness", "mode", "speechiness", "acousticness", "instrumentalness", "liveness", "valence", "tempo", "duration_ms", "time_signature", "key_mode", "track_popularity")
cancoes <- merge(trop_jovem, jackson, all = TRUE)
A primeira pergunta que me veio a mente foi:
cancoes %>%
plot_ly(y = ~liveness,
x = ~acousticness,
color = ~style,
text = ~paste('Música: ', track_name)) %>%
layout(title = "Relação entre musica gravada ao vivo e sua acustica",
yaxis = list(title = "Acustica"),
xaxis = list(title = "Popularidade"))
## No trace type specified:
## Based on info supplied, a 'scatter' trace seems appropriate.
## Read more about this trace type -> https://plot.ly/r/reference/#scatter
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Não parece ter nenhuma relação entre essas duas característica, contrariando o pensamento comum de que o ambiente da produção de uma música ao vivo poderia impactar negativamente na acustica da música, devidamente a poluição sonora produzida pelo ambiente e pelos fãs. Mas acredito que isso não seja impactante devido ao modo como são gravadas, tecnologia envolvida, e uma “limpeza” da musica, utilizando ferramentes de áudio.
cancoes %>%
plot_ly(x = ~danceability,
y = ~energy,
size = ~track_popularity,
color = ~style,
type = 'scatter',
text = ~paste('Música: ', track_name,
'<br>Popularidade: ', track_popularity)) %>%
layout(title = "Relação entre dançabilidade e energia",
xaxis = list(title = "Dançabilidade"),
yaxis = list(title = "Energia"))
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Também parece não haver relação entre a a dançabilidade e energia da música, essa dúvida vinha da ideia que músicas mais animadas agitam o povo e induzem as pessoas a querem dançar, mas parece que a energia da música não tem muito impacto da sua dançabilidade. Algo que pode ser notado é que a popularida da música(tamanho dos pontos) parece ter um padrão de energia e dançabilidade, músicas que tem engergia entre 0.4 e 0.6 e dançabilidade entre 0.4 e 0.6, centro da imagem tem uma maior popularidade.
Já que as respostas das duas primeiras perguntas foram contra a ideia inicial e quebraram a espectativa de influencia de uma caracteristicas sobre a outra, decidi buscar novas relações entre as canções, algo que pudesse impactar realmente na música.
cancoes %>%
plot_ly(x = ~tempo,
y = ~energy,
type = 'scatter',
size = ~loudness,
text = ~paste('Música: ', track_name,
'<br>Valência: ', valence,
'<br>Barulho: ', loudness)) %>%
layout(title = "Relação entre tempo e humor das canções",
xaxis = list(title = "Duração da canção (ms)"),
yaxis = list(title = "Energia"))
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Parece não haver relação entre a duração e o movimento musical, mas algo que surpreendeu e pode ser notado foi que quanto menor a energia da musica menor o loudness(barulho), isso é interessante pois aí podemos ver uma clara relação de quee o barulho pode impactar na energia da música, músicas mais energéticas são mais barulhentas. Era algo que não estava primeiramente sendo buscado mas que a partir de análise pode-se perceber essa relação.
Outro questionamento que podemos ter a partir dos resultados anteriores foi:
cancoes %>%
plot_ly(x = ~speechiness,
y = ~instrumentalness,
type = 'scatter',
color = ~style,
size = ~track_popularity,
text = ~paste('Música: ', track_name,
'<br>Artista: ', artist,
'<br>Popularidade: ', track_popularity)) %>%
layout(title = "Discurso em uma canção",
xaxis = list(title = "Discurso"),
yaxis = list(title = "Instrumentabilidade"))
## No scatter mode specifed:
## Setting the mode to markers
## Read more about this attribute -> https://plot.ly/r/reference/#scatter-mode
Pelos dados parece que sim música que tem discurso mais longos tendem a ter uma instrumentalidade menor que as que não tem discurso ou e tem discurso mais curtos.
Diante dessas análises acima, podemos perceber alguns padrões nas músicas de cada movimento, descobrir fatos curiosos com relação ao humor que cada canção desperta no público. Lembrando que esses dados são fornecidos pela API do Spotify, dessa forma alguns desses dados podem estar impressisos.